// 封装axios发请求
// 引入
import axios from 'axios'
// 引入vue
import Vue from "vue"
import router from '../router/index'
import qs from "querystring"
import { Toast } from "vant";


// 由于开发环境需要给图片加http://localhost:3000.,生产环境不需要。所以在http.js 中做环境判断
// 环境配置
if (process.env.NODE_ENV == "development") {
    // 开发环境
    Vue.prototype.$pre = "http://localhost:3000"
} else {
    // 生产环境
    Vue.prototype.$pre = ""
}

// 拦截器
// 请求拦截：每一次发请求都会经过请求拦截
// 请求拦截的回调函数的参数是请求的信息，回调函数的返回值就是后端真正收到的请求信息
axios.interceptors.request.use((req) => {
    console.log('====================请求拦截');
    console.log(req);
    //如果请求的地址不是登录也不是注册，那么就携带token
    if (req.url !== '/api/login' && req.url !== '/api/register') {
        req.headers.authorization = JSON.parse(localStorage.getItem('user')).token
    }
    return req;
})

// 响应拦截：每次响应都要做的逻辑
// 响应拦截的回调函数： 参数 是后端给前端的数据；返回值 是前端收到的真正的数据
axios.interceptors.response.use((res)=>{
    // 1.打印数据
    console.log('==响应拦截===');
    console.log("本次请求地址是："+res.config.url);
    console.log(res);
    //2.统一错误处理
    if(res.data.code !== 200){
        Toast(res.data.msg)
    }

    // 3.掉线处理
    if(res.data.msg === '登录已过期或访问权限受限'){
        // 清除用户信息
        localStorage.removeItem('user');
        // 跳转到登录页
        router.push('/login');
    }
        return res
    
})

// 登录
export let reqLogin = (user) => {
    return axios({
        url: "/api/login",
        method: "post",
        data: user
    })
}


// 注册
export let reqRegister = (user) => {
    return axios({
        url: "/api/register",
        method: "post", //不写默认就是get
        /* data:{
          phone:this.user.phone,
          nickname:this.user.nickname,
          password:this.user.password
        },//参数 */
        data: user
    })
}

// 首页分类列表数据
export let reqHomeCates = () => {
    return axios({
        url: '/api/getcate',
        method: 'get',
    })
}

// list
export let reqList = (params) => {
    return axios({
        url: "/api/getgoodlist",
        method: "get",
        params: params,
    })
}

// 详情
export let reqDetail = (id) => {
    return axios({
        url: "/api/getgoodsinfo",
        method: "get",
        params: id
    })
}

// 搜索
export let reqSearch = (kw) => {
    return axios({
        url: "/api/search",
        method: "get",
        params: kw
    })
}

// 加入购物车
export let reqAddShop = (d) => {
    return axios({
        url: "/api/cartadd",
        method: "post",
        data: d,
        /* headers: {
            authorization: JSON.parse(localStorage.getItem("user")).token
        } */
    })
}

//购物车列表
export let reqShopList = (d) => {
    return axios({
        url: '/api/cartlist',
        method: 'get',
        params: d,
        /* headers: {
            authorization: JSON.parse(localStorage.getItem('user')).token,
        } */
    })
}


// 轮播图
export let reqBanner =(params)=>{
    return axios({
        url:'/api/getbanner',
        method:'get',
        params:params,
    })
}


// 首页列表
export let reqHomeList = (p)=>{
    return axios({
        url:'/api/gethortgoods',
        params:p
    })
}

// 限时秒杀
export let reqspike =()=>{
    return axios({
        url:'/api/getseckill',
    })
}


// 分类
export let reqCates =()=>{
    return axios({
        url:'/api/getcates',
        method:'get',
    })
}


// 请求地址
export let reqaddressList =(params)=>{
    return axios({
        url:'/api/addresslist',
        method:'get',
        params:params
    })
}


// 添加地址
export let reqaddressAdd =(d)=>{
    return axios({
        url:'/api/addressadd',
        method:'post',
        data:qs.stringify(d)
    })
}

// 购物车删除
export let reqDelShop=(p)=>{
    return axios({
        url:'/api/cartdelete',
        method:'post',
        data:qs.stringify(p)
    })
}

// 购物车修改
export let reqAddNum=(p)=>{
    return axios({
        url:'/api/cartedit',
        method:'post',
        data:qs.stringify(p)
    })
}

//地址的编辑
export let reqAddressEdit=(p)=>{
    return axios({
        url:'/api/addressedit',
        method:'post',
        data:qs.stringify(p)
    })
}

// 订单生成
export let reqOrder=(data)=>{
    return axios({
        url: "/api/orderadd",
        method:"post",
        data:qs.stringify(data)
    })
}